package com.ostente.sceos.aplicativo.apresentacao.controle;

import java.io.Serializable;
import java.util.Collection;

import javax.annotation.Resource;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.ostente.sceos.aplicativo.entidade.Usuario;
import com.ostente.sceos.aplicativo.excecao.MensagemException;
import com.ostente.sceos.aplicativo.negocio.servico.ManterUsuarioAPS;
import com.ostente.sceos.aplicativo.util.BeanAbstrato;


@Controller
@Scope("session")
public class ManterUsuarioBean extends BeanAbstrato implements Serializable {

	private static final long serialVersionUID = 6929316813623705850L;
	
	private Usuario usuario;
	private Usuario usuarioAux;
	private static final String PAGINA_INICIAL = "/paginas/controle/configuracao/manterusuario/inicial.jsf";

	@Resource
	private ManterUsuarioAPS service;
	
	public void setService(ManterUsuarioAPS service) {
		this.service = service;
	}
	
	public String abrirPaginaInicial(){
		return ManterUsuarioBean.PAGINA_INICIAL;
	}
	
	public void salvarUsuario() throws Exception{
		 
		try {
			String msg = this.service.salvarUsuario(this.getUsuario());
			limparCampos();
			this.setMensagem(msg, MSG_TIPO_INFORMACAO, "");
		}catch (final MensagemException e) {
			this.setMensagem(e.getMessage(), MSG_TIPO_AVISO, "");
		}catch (final Exception e) {
			this.setMensagem(e.getMessage(), MSG_TIPO_ERRO, "");
		}
	}
	
	public void exluirUsuario() throws Exception{
		
		try{
			String msg = this.service.excluirUsuario(this.getUsuarioAux());
			limparCampos();
			
			this.setMensagem(msg, MSG_TIPO_INFORMACAO, "");
		}catch (final MensagemException me){
			this.setMensagem(me.getMessage(), MSG_TIPO_AVISO, "");
		}catch (final Exception e){
			this.setMensagem(e.getMessage(), MSG_TIPO_ERRO, "");
		}
	}
	
	public Usuario getUsuario() {
		if (usuario == null) {
			usuario = new Usuario();
		}
		return usuario;
	}
	
	public void limparCampos() {
		usuario = null;
	}
	
	public void setUsuario(Usuario usuario){
		this.usuario = usuario;
	}
	
	public Usuario getUsuarioAux(){
		if (usuarioAux == null){
			usuarioAux = new Usuario();
		}
		return usuarioAux;
	}
	
	public void setUsuarioAux(Usuario usuarioAux){
		this.usuarioAux = usuarioAux;
	}
	
	public Collection<Usuario> getTodosUsuarios() throws Exception {
		return this.service.consultarTodosUsuarios();
	}
}